home *** CD-ROM | disk | FTP | other *** search
- #!/usr/bin/perl -w
-
- =head1 NAME
-
- dh_bash-completion - install bash completions for package
-
- =cut
-
- use strict;
- use File::Find;
- use Debian::Debhelper::Dh_Lib;
-
- =head1 SYNOPSIS
-
- B<dh_bash-completion> [S<I<debhelper options>>]
-
- =head1 DESCRIPTION
-
- dh_bash-completion is a debhelper program that is responsible for installing
- completions for bash, usable installing the "bash-completion" package.
-
- If a file named debian/package.bash-completion exists, then different actions
- are performed, depending on its format.
-
- It can be a proper completion snippet, and in that case it would be installed
- in the completion directory, and no other actions would be performed.
-
- It can also be a list of files, with an optionally specified name to call the
- completion snippet after. The file format is as follows:
-
- my/path/to/foo-completion # this would be installed as "foo-completion"
- my/path/to/bar-completion baz # this would be installed as "baz"
-
- =cut
-
- init();
-
- my $srcdir = '.';
- $srcdir = $dh{SOURCEDIR}."/" if defined $dh{SOURCEDIR};
-
- foreach my $package (@{$dh{DOPACKAGES}}) {
- next if is_udeb($package);
-
- my $tmp = tmpdir($package);
- my $bc_dir = "$tmp/etc/bash_completion.d";
- my $completions = pkgfile($package,"bash-completion");
-
- my @install;
- my $name;
-
- if ($completions) {
- if (! -d "$bc_dir") {
- doit("install", "-d", "$bc_dir");
- }
-
- # try parsing a list of files
- @install = filedoublearray($completions);
- foreach my $set (@install) {
- my @filelist;
- my @tmp = @$set;
- if (@$set > 1) {
- $name = pop @$set;
- }
- else {
- $name = basename($tmp[0]);
- }
- verbose_print "installing $tmp[0] as $name";
-
- my @found;
- foreach my $glob (@$set) {
- @found = glob "$srcdir/$glob";
- if (!compat(6)) {
- # Fall back to looking into debian/tmp
- if (!@found || !-e $found[0]) {
- @found = glob "debian/tmp/$glob";
- }
- }
-
- if (!@found || !-e $found[0]) {
- warning "file-list parsing failed, installing as proper snippet";
-
- doit("install", "-p", "-m644", $completions, "$bc_dir/$package");
- exit 0
- }
- push @filelist, @found;
- }
-
- if (! compat(4)) { # check added in v5
- # glob now, relative to srcdir
- if (!@filelist) {
- error("$package missing files (@$set), aborting");
- }
- }
-
- foreach my $src (@filelist) {
- doit("install", "-p", "-m644", $src, "$bc_dir/$name");
- }
- }
- }
- }
-
- =head1 SEE ALSO
-
- L<debhelper(1)>
-
- This program is a part of bash-completion.
-
- L<bash(1)>
-
- =head1 AUTHOR
-
- David Paleino <d.paleino@gmail.com>
-
- =cut
-